package com.ylyq.ylxx.model.bean;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * @ClassName OceanengineCreateCreativeResult
 * @Description TODO
 * @Author xiaweichao
 * @Date 2020/7/1 17:31
 * @Version 1.0
 */
@NoArgsConstructor
@Data
@ApiModel(value = "创建广告创意返回参数")
public class OceanengineCreateCreativeResult {

    /**
     * message : OK
     * code : 0
     * data : {}
     * request_id : ×××
     */

    private String message;
    private int code;
    private DataBean data;
    private String request_id;

    @NoArgsConstructor
    @Data
    @ApiModel(value = "创建广告创意返回参数实体")
    public static class DataBean {
        @ApiModelProperty(value = "广告主ID")
        private Long advertiser_id;
        @ApiModelProperty(value = "计划ID")
        private String ad_id;
        @ApiModelProperty(value = "时间戳,用于判断是否基于最新信息修改")
        private String modify_time;
        @ApiModelProperty(value = "展示监测链接")
        private String track_url;
        @ApiModelProperty(value = "点击监测链接")
        private String action_track_url;
        @ApiModelProperty(value = "视频有效播放监测链接")
        private String video_play_effective_track_url;
        @ApiModelProperty(value = "视频播放完毕监测链接")
        private String video_play_done_track_url;
        @ApiModelProperty(value = "视频播放监测链接")
        private String video_play_track_url;
        @ApiModelProperty(value = "是否关闭评论\n" +
                "        允许值: 0, 1")
        private Integer is_comment_disable;
        @ApiModelProperty(value = "是否关闭视频详情页落地页(勾选该选项后,视频详情页中不默认弹出落地页,仅对视频广告生效)\n" +
                "        允许值: 0, 1")
        private Integer close_video_detail;
        @ApiModelProperty(value = "创意展现方式,详见【附录-创意展现方式】\n" +
                "        允许值: \"CREATIVE_DISPLAY_MODE_CTR\", \"CREATIVE_DISPLAY_MODE_RANDOM\"")
        private String creative_display_mode;
        @ApiModelProperty(value = "是否使用优选广告位，0表示不使用优选，1表示使用，使用优选广告位的时候默认忽略inventory_type字段。\n" +
                "        默认值: 0\n" +
                "        允许值: 0, 1")
        private Integer smart_inventory;
        @ApiModelProperty(value = "场景广告位，详见【附录-场景广告位】，使用场景广告位时默认忽略inventory_type字段，与scene_inventory不能同时传\n" +
                "        允许值: \"VIDEO_SCENE\", \"FEED_SCENE\", \"TAIL_SCENE\"")
        private String scene_inventory;
        @ApiModelProperty(value = "是否开启衍生计划，1为开启，0为不开启\n" +
                "        默认值: 0")
        private String generate_derived_ad;
        @ApiModelProperty(value = "创意投放位置,详见【附录-投放位置】，请注意广告位中的信息流（INVENTORY_FEED）与详情页（INVENTORY_TEXT_LINK）已合并为头条系（依然使用INVENTORY_FEED字段，名称更改为头条系）")
        private String[] inventory_type;
        @ApiModelProperty(value = "文章来源, 当推广目的为非应用下载或推广目的为应用下载&download_type=EXTERNAL_URL时必填")
        private String source;
        @ApiModelProperty(value = "应用名(当推广应用下载[包含Android、iOS]时, 必填)")
        private String app_name;
        @ApiModelProperty(value = "Android应用下载详情页(当推广应用下载Android时, 必填)")
        private String web_url;
        @ApiModelProperty(value = "创意标签(以英文逗号分隔,最多20个标签,且每个标签长度不超过10个字符)")
        private String[] ad_keywords;
        @ApiModelProperty(value = "创意分类-三级行业（新版），填写三级行业ID，可从tools/industry/get/ 接口获取")
        private Long third_industry_id;
        @ApiModelProperty(value = "附加创意类型(仅当推广目的landing_type=LINK时,填写)。详见【附录-附加创意类型】\n" +
                "        允许值: \"ATTACHED_CREATIVE_NONE\", \"ATTACHED_CREATIVE_PHONE\",\"ATTACHED_CREATIVE_FORM\"")
        private String advanced_creative_type;
        @ApiModelProperty(value = "附加创意副标题")
        private String advanced_creative_title;
        @ApiModelProperty(value = "电话号码(当附加创意类型为ATTACHED_CREATIVE_PHONE时, 返回)")
        private String phone_number;
        @ApiModelProperty(value = "按钮文本(当附加创意类型不为ATTACHED_CREATIVE_NONE时, 返回)")
        private String button_text;
        @ApiModelProperty(value = "表单提交链接(当附加创意类型为ATTACHED_CREATIVE_FORM时, 返回)")
        private String form_url;
        @ApiModelProperty(value = "创意类型，该字段为STATIC_ASSEMBLE表示程序化创意，其他情况无该字段")
        private String creative_material_mode;
        @ApiModelProperty(value = "品牌主页推广抖音号")
        private String ies_core_user_id;
        @ApiModelProperty(value = "是否隐藏抖音作品列表广告内容，0：不隐藏，1：隐藏")
        private Integer is_feed_and_fav_see;
        @ApiModelProperty(value = "试玩素材url。")
        private String playable_url;
        @ApiModelProperty(value = "dpa模板id，针对dpa广告。")
        private Long template_id;
        @ApiModelProperty(value = "dpa词包id列表，针对dpa广告")
        private Long[] dpa_dict_ids;
        @ApiModelProperty(value = "是否开启自动派生创意")
        private Long creative_auto_generate_switch;
        @ApiModelProperty(value = "点击监测链接上报方式,默认值: SERVER_SEND\n" +
                "        允许值: SERVER_SEND(服务器端上传), CLIENT_SEND(客户端上传)。")
        private String track_url_send_type;
        @ApiModelProperty(value = "电商卡片信息。如果没有启用，那么返回相关字段。")
        private Object[] commerce_cards;


        @ApiModelProperty(value = "素材信息, 投放位置和创意类型决定素材规格。")
        private List<CreativesBean> creatives;
        @ApiModelProperty(value = "标题信息，程序化创意标题列表。最多包含10个标题。")
        private List<TitleBean> title_list;
        @ApiModelProperty(value = "素材信息，程序化创意素材列表。最多包含12张图和6个视频。")
        private List<ImageBean> image_list;


        @NoArgsConstructor
        @Data
        @ApiModel(value = "素材信息，程序化创意素材列表,最多包含12张图和6个视频")
        public static class ImageBean {
            @ApiModelProperty(value = "素材类型")
            private String image_mode;
            @ApiModelProperty(value = "图片id，视频素材时填写")
            private String image_id;
            @ApiModelProperty(value = "视频id，视频素材时填写")
            private String video_id;
            @ApiModelProperty(value = "图片id列表，非视频素材时填写")
            private List<String> image_ids;
        }
        @NoArgsConstructor
        @Data
        @ApiModel(value = "标题信息，程序化创意标题列表,最多包含10个标题")
        public static class TitleBean {
            @ApiModelProperty(value = "创意标题")
            private String title;
            @ApiModelProperty(value = "动态词包ID，可使用动态词包查询接口查询数据")
            private List<String> creative_word_ids;
        }
        @NoArgsConstructor
        @Data
        @ApiModel(value = "素材信息, 投放位置和创意类型决定素材规格...")
        public static class CreativesBean {
            /**
             * creative_id : 236
             * image_mode : CREATIVE_IMAGE_MODE_LARGE
             * title : xxx
             * image_ids : ["xxx"]
             * image_id : xxx
             * video_id : xxx
             */
            @ApiModelProperty(value = "创意ID。当类型为程序化创意时，没有审核通过前，该字段为null")
            private Long creative_id;
            @ApiModelProperty(value = "素材类型")
            private String image_mode;
            @ApiModelProperty(value = "创意标题")
            private String title;
            @ApiModelProperty(value = "动态词包ID")
            private List<String> creative_word_ids;
            @ApiModelProperty(value = "dpa词包id列表，针对dpa广告")
            private Long[] dpa_dict_ids;
            @ApiModelProperty(value = "图片id，视频素材时返回")
            private String image_id;
            @ApiModelProperty(value = "视频id，视频素材时返回")
            private String video_id;
            @ApiModelProperty(value = "图片id列表（组图传3张图，其他传1张），图片素材返回")
            private List<String> image_ids;
            @ApiModelProperty(value = "创意自定义参数，例如开发者可设定此参数为创意打标签用于区分使用的素材类型")
            private String third_party_id;
            @ApiModelProperty(value = "是否将视频的封面和标题同步到图片创意，1为开启，0为不开启。视频素材时返回")
            private Long derive_poster_cid;
            @ApiModelProperty(value = "dpa模板id，针对dpa广告")
            private Long template_id;
            @ApiModelProperty(value = "DPA创意实际显示的图片id，针对dpa广告")
            private String template_image_id;

        }
    }
}
